package com.literature.search.core.entity;

import com.literature.search.core.enums.FileEsStateEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.io.Serializable;
import java.util.List;

@Document(collection = "file_document")
@ApiModel(value = "FileDocument", description = "文件文档")
@Data
public class FileDocument implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @Id
    @ApiModelProperty(value = "文件id")
    private String id;

    /**
     * 文件名称
     */
    @Field("file_name")
    @ApiModelProperty(value = "文件名称")
    private String fileName;

    /**
     * 文件大小
     */
    @ApiModelProperty(value = "文件大小")
    private long size;

    /**
     * 上传时间
     */
    @Field("upload_date")
    @ApiModelProperty(value = "上传时间")
    private String uploadDate;

    /**
     * 上传用户ID
     */
    @Field("user_id")
    @ApiModelProperty(value = "上传用户ID")
    private String userId;

    /**
     * 上传用户姓名
     */
    @Field("user_name")
    @ApiModelProperty(value = "上传用户姓名")
    private String userName;

    /**
     * 文件MD5值
     */
    @Field("md5")
    @ApiModelProperty(value = "文件MD5值")
    private String md5;

    /**
     * 文件内容
     */
    @Field("content")
    @ApiModelProperty(value = "文件内容")
    private byte[] content;

    /**
     * 文件描述
     */
    @Field("description")
    @ApiModelProperty(value = "文件描述")
    private String description;

    /**
     * 大文件管理GridFS的ID
     */
    @Field("gridfs_id")
    @ApiModelProperty(value = "大文件管理GridFS的ID")
    private String gridfsId;

    /**
     * 文件类型
     */
    @Field("content_type")
    @ApiModelProperty(value = "文件类型")
    private String contentType;

    /**
     * 文件后缀名
     */
    @Field("suffix")
    @ApiModelProperty(value = "文件后缀名")
    private String suffix;

    /**
     * 首页预览图的GridFS的ID
     */
    @Field("thumb_id")
    @ApiModelProperty(value = "首页预览图的GridFS的ID")
    private String thumbId;

    @Field("page_content_list")
    @ApiModelProperty(value = "每一页的内容")
    private List<PageContent> pageContentList;

    @Field("picture_parse_list")
    @ApiModelProperty(value = "PDF中解析出的图片")
    private List<PictureParse> pictureParseList;

    /**
     * 文档的状态
     **/
    @Field("file_es_state")
    @ApiModelProperty(value = "文档建立索引时候的状态")
    private FileEsStateEnum fileEsState = FileEsStateEnum.WAITE; // 默认等待状态

    /**
     * 文档错误信息
     **/
    @Field("error_msg")
    @ApiModelProperty(value = "文档错误信息")
    private String errorMsg;

    // true 正在审核；false 审核完毕
    @Field("reviewing")
    @ApiModelProperty(value = "是否正在审核")
    private boolean reviewing = true;

    //点赞数
    @Field("like")
    @ApiModelProperty(value = "点赞数")
    private int like = 0;

    //收藏数
    @Field("collect")
    @ApiModelProperty(value = "收藏数")
    private int collect = 0;

    //下载数
    @Field("download")
    @ApiModelProperty(value = "下载数")
    private int download = 0;

    //浏览数
    @Field("view")
    @ApiModelProperty(value = "浏览数")
    private int view = 0;


    // 违禁词列表
    @Field("word_list")
    @ApiModelProperty(value = "违禁词列表")
    private List<String> wordList;

    @ApiModelProperty("是否是英文文档")
    @Field("is_english")
    private Boolean isEnglish;

}
